8장 데이터베이스 서버 준비하기
RDS
AWS에서는 여러 형태의 데이터 베이스 서버를 제공한다. 그 중 관계형 데이터 베이스를 지원하는 RDS(Amazon Relational Database Service)를 알아보자.
EC2로 생성한 서버에 MySQL등의 RDB를 설치하여 사용할 수도 있지만, 몇가지 문제가 있다.
- 데이터베이스 제품을 직접 설치해야한다.
- EC2의 OS 자체를 관리해야한다.
- 예측하지 못한 장애 발생에 대해 대응할 준비를 해야 한다.
이러한 문제들을 매니지드 서비스인 RDS를 해결해준다.
매니지드 서비스
RDS와 같이 작동하는 서버나 OS를 의식하지 않고 필요한 서비스를 구축할 수 있는 시스템을 AWS에서는 매니지드 서비스라고 부른다.
RDS 시스템
RDS 시스템은 크게 4개의 요소로 구성된다.
- 데이터베이스 엔진
- 데이터베이스 본체
- MySQL 등의 데이터베이스 제품을 엔진으로 선택할 수 있다.
- 내부적으로 여러 인스턴스로 구성(성능 높이고, 내결합성 높이기 위해)
- 파라미터 그룹
- 데이터베이스 엔진 고유의 설정 수행
- 옵션 그룹
- RDS 고유의 설정 수행
- 서브넷 그룹
- 데이터베이스 서버를 여러개의 가용 영역에 분산 배치할 때 이용되는 설정
- 데이터베이스 서버를 분산시켜 제공할 수 있는 서브넷들을 서브넷 그룹으로 설정
데이터베이스 서버 생성 흐름
- 파라미터 그룹 생성
- 옵션 그룹 생성
- 서브넷 그룹 생성
- 데이터베이스 생성
파라미터 그룹 생성
파라미터 그룹은 MySQL 이 제공하는 데이터베이스 설정을 수행하는 영역이다.
기본 파라미터 그룹이 있지만, 변경할 수가 없으므로 새로 생성해서 데이터베이스에 적용한다.
RDS -> 파라미터 그룹 -> 생성
- 파라미터 그룹패밀리 : 적용할 데이터 베이스.
- 유형 : cluster 여부로 2가지로 나뉜다. DB Parameter Group, DB Parameter Cluster Group
옵션 그룹 생성
RDS와 관련된 추가 설정 항목
파라미터 그룹과 마찬가지로 기본 옵션 그룹 있지만, 설정 항목 변경할 수 없으니까 새로운 옵션 그룹 생성해서 적용해준다.
RDS -> 옵션 그룹 -> 생성
- 엔진과 메이저 엔진 버전 : 옵션 그룹을 적용할 데이터베이스 종류 지정.
서브넷 그룹 생성
서브넷 그룹은 서브넷을 2개 이상 포함한 그룹이다. ( 그것이 그룹이니까 ㅋㅋ)
EC2를 생성할 때는 서브넷을 직접 지정했는데, RDS에서는 어떤 서브넷에 생성될지는 AWS가 정한다.
RDS는 멀티 AZ라는 기능으로 자동으로 여러 가용 영역에 DB 작성할 수 있다.
public subnet은 외부 공개되므로 데이터베이스를 public subnet에 위치시키면 보안상 문제가 발생할 가능성이 있다. 그래서 되도록 private subnet에 추가한다.
데이터 베이스 생성
RDS -> 데이터베이스 -> 생성
- 데이터베이스 생성 방법 선택
항목을 수동설정하는 표준생성 선택 - 엔진 옵션
- 템플릿
선택 템플릿에 따라서 하위 옵션을 일부 자동 선택해주거나 기능이 제한된다.
프리티어의 경우 다중 AZ를 선택할 수 없다.
하지만, 지금은 연습이기 때문에 프리티어를 선택해준다. - 설정
마스터 사용자의 이름과 마스터 암호 설정 - DB 인스턴스 클래스
프리티어를 선택하여서 t2.micro를 선택했다. - 스토리지
스토리지 자동 조정을 활성화하면 최대 스토리지 임계값을 설정하는 게 좋다. - 연결
VPC와 DB 서브넷 그룹을 지정해준다.
데이터베이스 포트도 설정할 수 있다. - 인증
IAM 사용자로 데이터베이스 인증을 설정할 수 있다.
-> IAM이 제공하는 안전한 사용자 관리를 이용할 수 있지만, DB 사용자를 외부에서 관리해야하는 불편함 존재. - 추가 구성
앞에서 만들어준 DB 파라미터 그룹과 옵션 그룹을 지정해준다.
RDS 작동확인
mysqladmin ping -u root -h database-1.c2pjf92fzjv5.ap-northeast-2.rds.amazonaws.com -p
Enter password:
mysqld is alive